package com.asimplefox.service.abst;

import com.alibaba.fastjson.JSONObject;

/**
 * @author github.kloping
 */
public interface ResultU {

    String EMPTY_ARRAY = "[]";

    default String define(String msg) {
        return result(403, msg);
    }

    default String error(String msg) {
        return result(500, msg);
    }

    default String success(String msg) {
        return result(200, msg);
    }

    default String fail(String msg) {
        return result(400, msg);
    }

    default String result(int code, String msg) {
        return String.format("{\"code\": %d, \"msg\": \"%s\"}", code, msg);
    }

    default String result(int code, String msg, String fname, Object data) {
        return String.format("{\"code\": %d, \"msg\": \"%s\", \"%s\":\"%s\"}", code, msg, fname, data);
    }

    default String result(int code, String msg, Kv... kvs) {
        JSONObject data = new JSONObject();
        data.put("code", code);
        data.put("msg", msg);
        for (Kv kv : kvs) {
            data.put(kv.k, kv.v);
        }
        return data.toJSONString();
    }

    class Kv {
        private String k;
        private Object v;

        public static Kv of(String k, Object v) {
            Kv kv = new Kv();
            kv.k = k;
            kv.v = v;
            return kv;
        }
    }
}
